package rkdwogus7.basic;

public class J03_Expression24 {

	public static void main(String[] args) {
		// 전치 / 후치 증가 / 감소 연산자가
		// 수식에 사용되는 경우
		int a = 3;	// a = ++a;	얘는 일종의 버그라고 봐야 돼. 원래는 얘가 동작하면 안되는데 의미없는 코드라고는 나오면서도 동작이 되어버리는거지. 
		a = a++;	// 로 하고 해보면 왜 3이 나오는거지?
					// 좌변과 우변에서, 자바든 C든 똑같아. 우변의 것들은 값을 변화시킬 수가 없어. 좌변은 수식에 의해서 값이 변할 수 있는거지.
					// a++이면 우변의 값이 변화되는거지? 그래서 무시가 되는거야.(의미없는코드)
// 일반적으로 표현식은 우변의 식에 의해 좌변의 값이 바뀜.
// 하지만, 우변에서 값을 변경하는 식을 작성하면 그 표현식은 의미없는 것으로 처리됨.
// 따라서, 실행되지 않는 코드로 인식
		// 보충
		// int a = 3 , b = 3;
		// a = b++;
		// a와 b값은?
		// 이걸 대입해서 구해보면 여전히 3이 나오는 것을 볼 수 있지.
		System.out.println( a );
		if ( a == 3 ) System.out.println( "Three" );
		else System.out.println( "Four" );
		// 단순하게 문장에 썼으니 수식 밖에 있잖아. 이 때는 무조건 값을 증가시키게 되는거야.
		// 그러니까 4 == 3 이 아니니까 Four이 출력되어야 하겠지.
//		int a = 3;
//		if ( ++a == 3 ) System.out.println( "Three" );
//		else System.out.println( "Four" );
		// 얘는 ++이 먼저 왔으니까 일단 증가를 시킨 다음
		// 계산에 사용하게 되는거야.
//		int a = 3;
//		if ( a++ == 3 ) System.out.println( "Three" );
//		else System.out.println( "Four" );
		// 수식에 들어올 때 ++이 뒤에 있으니까 일단 a값은 3이 되고
		// 수식에서 벗어난 다음에야 비로소 a++의 적용을 받게 되는거야.

	}

}
